package com.lh.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateAddDemo {

    /**
     * 计算指定日期加上天数后的日期
     * @param inputDate java.util.Date 类型
     * @param days 要增加的天数
     * @return 新的日期
     */
    public static Date calculateFutureDate(Date inputDate, int days) {
        if (inputDate == null) {
            throw new IllegalArgumentException("输入日期不能为空！");
        }
        if (days < 0) {
            throw new IllegalArgumentException("天数不能为负数！");
        }

        Calendar cal = Calendar.getInstance();
        cal.setTime(inputDate);
        cal.add(Calendar.DAY_OF_MONTH, days); // 自动处理大小月、闰年
        return cal.getTime();
    }

    public static void main(String[] args) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 示例：2025-01-28 10:30:00 加 1 天
        Date input = sdf.parse("2025-01-28 10:30:00");
        int days = 1;

        Date result = calculateFutureDate(input, days);

        System.out.println("输入日期: " + sdf.format(input));
        System.out.println("加 " + days + " 天后: " + sdf.format(result));

        // 示例：2024-02-28 08:00:00（闰年），加 1 天
        Date leapYearDate = sdf.parse("2024-02-28 08:00:00");
        System.out.println("闰年测试: " + sdf.format(calculateFutureDate(leapYearDate, 1)));

        // 示例：2023-02-28 08:00:00（平年），加 1 天
        Date normalYearDate = sdf.parse("2023-02-28 08:00:00");
        System.out.println("平年测试: " + sdf.format(calculateFutureDate(normalYearDate, 1)));
    }
}
